﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>DI_USERCONTROL</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../styles/styles.css">
<script language="javascript" src='../../links.js' type="text/javascript"></script>
</head>
<body>

<h1>DI_USERCONTROL</h1>
<div class=navbar>
<a href="../../index.html">главная</a> |
<a href="index.html">элементы диалога</a> |
<a href="../index.html">Dialog API</a>
</div>

<div class=shortdescr>
<em>Свобода выбора!</em>
Элемент диалога <code>DI_USERCONTROL</code> описывает элемент управления, определяемый программистом:  отрисовка, реагирование на события и прочие
операции с элементом - всё это возлагается "на хрупкие плечи" плагина.
</div>

<pre class=syntax>
struct FarDialogItem
{
  enum FARDIALOGITEMTYPES Type = <b>DI_USERCONTROL</b>
  intptr_t X1                  = <b>X1</b>
  intptr_t Y1                  = <b>Y1</b>
  intptr_t X2                  = <b>X2</b>
  intptr_t Y2                  = <b>Y2</b>
  struct FAR_CHAR_INFO *VBuf   = <b>виртуальный буфер отрисовки</b>
  FARDIALOGITEMFLAGS Flags     = <b>Flags</b>
  const wchar_t *Data          = <b>User Defined</b>
};
</pre>

<p class=note><img src="../../../images/note.gif" alt="Внимание!" width="10" height="10"> Внимание!</p>
<UL class=note><LI>Приведено схематичное изображение структуры; полное описание структуры <a href="../../structures/fardialogitem.html">см. здесь</a>.</LI></UL>

<a name="virtbuf"></a>
<h3>Виртуальный буфер отрисовки</h3>
<div class=descr>
<p>Параметр <code>VBuf</code> задаёт адрес виртуального буфера типа <a href="../../structures/far_char_info.html">FAR_CHAR_INFO</a>.

<p>Если значение <code>VBuf = NULL</code>, то это значит, что плагин сам должен отрисовывать элемент <code>DI_USERCONTROL</code> после прихода события
<a href="../dmsg/dn_drawdlgitem.html">DN_DRAWDLGITEM</a>, используя сервисную функцию <a href="../../service_functions/text.html">Text</a>.

<p>Если <code>VBuf != NULL</code>, то Менеджер Диалогов считает, что это адрес буфера типа <a href="../../structures/far_char_info.html">FAR_CHAR_INFO</a>.
Здесь обработчик диалога, в ответ на событие <a href="../dmsg/dn_drawdlgitem.html">DN_DRAWDLGITEM</a>, должен отрисовать этот элемент в виртуальный буфер, после чего Менеджер
Диалогов выдаст содержимое <code>VBuf</code> на экран.
</div>

<h3>Флаги</h3>
<div class=descr>
Для элемента <code>DI_USERCONTROL</code> имеют значения следующие флаги:
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Флаг</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_nofocus.html">DIF_NOFOCUS</a></td>
<td class="cont" width="60%">управляющий элемент не получает клавиатурный фокус ввода</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_disable.html">DIF_DISABLE</a></td>
<td class="cont" width="60%">элемент является недоступным</td></tr>
</table>
</div>

<h3>События</h3>
<div class=descr>
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Событие</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_drawdlgitem.html">DN_DRAWDLGITEM</a></td>
<td class="cont" width="60%">начало отрисовки элемента</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_controlinput.html">DN_CONTROLINPUT</a></td>
<td class="cont" width="60%">нажали клавиатурную клавишу или кликнули клавишей мыши</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_killfocus.html">DN_KILLFOCUS</a></td>
<td class="cont" width="60%">элемент потерял фокус (при условии, что не используется флаг <a href="../flags/dif_nofocus.html">DIF_NOFOCUS</a>)</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_killfocus.html">DN_GOTFOCUS</a></td>
<td class="cont" width="60%">элемент получил фокус (при условии, что не используется флаг <a href="../flags/dif_nofocus.html">DIF_NOFOCUS</a>)</td></tr>
</table>
</div>

<h3>Замечания</h3>
<div class=descr>
<ol>
<li>Замечания по работе с курсором см. в описании сообщений <a href="../dmsg/dm_getcursorpos.html">DM_GETCURSORPOS</a> или <a href="../dmsg/dm_setcursorpos.html">DM_SETCURSORPOS</a>.
</ol>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="../../structures/fardialogitem.html">FarDialogItem</a>
</div>

</body>
</html>
